// 显式推断
// 假设一个场景，我声明了一个变量myname，我希望他以后只能被赋值为字符串，这在js中是没法做到的，但是ts可以，你直接这样写就行
var myname: string = "mikia";
myname = 100; //直接爆红，告诉你你正在给一个只能为字符串的数据赋值为数字
myname.charAt(1); //打出myname.的时候，代码提示自动就会把字符串身上的方法提示出来，这就是因为ts让vscode知道了你这个myname一定是字符串

// 隐式推断
// 其实你这样，也能让vscode判断myname2为字符串，这个叫隐式推断，上面的叫显式推断
var myname2 = "mikaisa";
myname2 = 1; //爆红，因为myname2在初始化给值的时候就已经被判定为只能为字符串

// 以上就是ts的第一个优点，会在你写代码的阶段就告诉你可能发生的问题，防止你后续出错无法定位

// 现在来个烧脑的，我想搞一个变量将来既可以是字符串又可以是数字呢？很简单，用个 | 就可以了
let a1: number | string;
let a2: number | string;
a1 = 1;
a1 = "2";
a1 = {}; //爆红
